package com.emm.yixun.website.controller.system;

import java.util.Date;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import com.emm.yixun.common.enums.DictionaryTypeEnums;
import com.emm.yixun.common.model.Dictionary;
import com.emm.yixun.common.model.User;
import com.emm.yixun.common.model.dto.DictionaryDto;
import com.emm.yixun.common.model.dto.NoticeDto;
import com.emm.yixun.common.model.enums.DelFlagEnum;
import com.emm.yixun.common.model.enums.IsReadEnum;
import com.emm.yixun.common.model.enums.IsSendEnum;
import com.emm.yixun.common.model.enums.IsValidEnum;
import com.emm.yixun.common.model.enums.NoticeTypeEnum;
import com.emm.yixun.common.response.Response;
import com.emm.yixun.estate.service.ProjectServiceFacade;
import com.emm.yixun.system.service.DictionaryServiceFacade;
import com.emm.yixun.system.service.NoticeServiceFacade;
import com.emm.yixun.website.common.ajax.AjaxRes;
import com.emm.yixun.website.common.utils.base.Const;
import com.emm.yixun.website.common.utils.security.ShiroUtil;
import com.emm.yixun.website.controller.base.BaseController;
/**
* 类描述： 系统首页数据Controller
* 创建者： ThinkPad
* 项目名称： emm-website
* 创建时间： 2016年5月30日 上午11:24:36
* 版本号： v1.0
 */
@RequestMapping(value = "/system/resources/")
@Controller
public class IndexController extends BaseController<Dictionary>{
	/**
	* 方法描述 : 查询类别列表
	* 创建者：ThinkPad 
	* 项目名称： emm-website
	* 类名： IndexController.java
	* 版本： v1.0
	* 创建时间： 2016年5月30日 下午1:38:48
	* @param request
	* @return ModelAndView
	 */
	@Resource
	private DictionaryServiceFacade dictionaryServiceFacade;
	
	@Resource
	private ProjectServiceFacade projectServiceFacade;
	
	@Resource
	private NoticeServiceFacade noticeServiceFacade;
	
	
	
	@RequestMapping(value = "list")
	public ModelAndView index(HttpServletRequest request){
		ModelAndView mv = new ModelAndView("/system/adv/noticeTypeList").addObject("type", DictionaryTypeEnums.NOTICE_TYPE.getNo());

		return mv; 
	}
	/**
	* 方法描述 : 保存类别
	* 创建者：ThinkPad 
	* 项目名称： emm-website
	* 类名： IndexController.java
	* 版本： v1.0
	* 创建时间： 2016年5月30日 下午3:00:25
	* @param request
	* @return Map<String,Boolean>
	 */
	@RequestMapping(value = "saveDictionary")
	public @ResponseBody AjaxRes saveDictionary(HttpServletRequest request){
		AjaxRes ar=getAjaxRes();
		if(ar.setNoAuth(doSecurityIntercept(Const.RESOURCES_TYPE_BUTTON,"estate:noticeType:add"))){
			try {
				DictionaryDto dto = new DictionaryDto();
				dto.setDictionaryType(DictionaryTypeEnums.NOTICE_TYPE.getNo());
				dto.setDictionaryValue(DictionaryTypeEnums.NOTICE_TYPE.getNo());
				dto.setDictionaryName(request.getParameter("dictionaryName"));
				User user=ShiroUtil.getCurrentUser();
				dto.setCreateUserId(user.getId());
				dto.setCreateTime(new Date());
				dto.setUpdateTime(new Date());
				dto.setDelFlag("0");
				Response<DictionaryDto> response=dictionaryServiceFacade.save(dto);
				if(response.isSuccess()){
					ar.setSucceedMsg(Const.SAVE_SUCCEED);
				}else{
					ar.setFailMsg(Const.SAVE_FAIL);
				}
			} catch (Exception e) {
				e.printStackTrace();
			} 
		}
		return ar;
	}
	
	@RequestMapping(value = "saveNotice")
	public @ResponseBody AjaxRes saveNotice(HttpServletRequest request,NoticeDto noticeDto){
		AjaxRes ar=getAjaxRes();
		if(ar.setNoAuth(doSecurityIntercept(Const.RESOURCES_TYPE_BUTTON,"system:notice:add"))){
			noticeDto.setNoticeType(NoticeTypeEnum.NOTICE.getNo());
			noticeDto.setIssueTime(new Date());
			User user=ShiroUtil.getCurrentUser();
			noticeDto.setMerchantId(user.getMerchantId());
			noticeDto.setUserCode(user.getUserCode());
			noticeDto.setAccessCode(noticeDto.getProjectCode());
			noticeDto.setCreateUserId(user.getId());
			noticeDto.setCreateTime(new Date());
			noticeDto.setDelFlag(DelFlagEnum.UNDEL.getNo());
			noticeDto.setIsValid(IsValidEnum.VALID.getNo());
			noticeDto.setIsRead(IsReadEnum.UNREAD.getNo());
			noticeDto.setIsSend(IsSendEnum.UNSEND.getNo());
			Response<NoticeDto> response =  noticeServiceFacade.save(noticeDto);
			if(response.isSuccess()){
				ar.setSucceedMsg(Const.SAVE_SUCCEED);
			}else{
				ar.setFailMsg(Const.SAVE_FAIL);
			}
		}
		return ar;
	}
	
}
